From 701798acaeb28f657bd1420d06253d350eb41b96 Mon Sep 17 00:00:00 2001 From: Factiven Date: Tue, 12 Sep 2023 21:45:30 +0700 Subject: initial v4 commit --- pages/en/profile/[user].js | 116 +++++++++++++++++++++++++++++++++++---------- 1 file changed, 92 insertions(+), 24 deletions(-) (limited to 'pages/en/profile/[user].js') diff --git a/pages/en/profile/[user].js b/pages/en/profile/[user].js index b66699b..fc06236 100644 --- a/pages/en/profile/[user].js +++ b/pages/en/profile/[user].js @@ -4,11 +4,47 @@ import Navbar from "../../../components/navbar"; import Image from "next/image"; import Link from "next/link"; import Head from "next/head"; -import { useState } from "react"; +import { useEffect, useState } from "react"; +import { getUser } from "../../../prisma/user"; +import { ToastContainer, toast } from "react-toastify"; -export default function MyList({ media, sessions, user, time }) { +export default function MyList({ media, sessions, user, time, userSettings }) { const [listFilter, setListFilter] = useState("all"); const [visible, setVisible] = useState(false); + const [useCustomList, setUseCustomList] = useState(true); + + useEffect(() => { + if (userSettings) { + localStorage.setItem("customList", userSettings.CustomLists); + setUseCustomList(userSettings.CustomLists); + } + }, [userSettings]); + + // Function to handle checkbox state changes + const handleCheckboxChange = async () => { + setUseCustomList(!useCustomList); // Toggle the checkbox state + try { + const res = await fetch("/api/user/profile", { + method: "PUT", + headers: { + "Content-Type": "application/json", + }, + body: JSON.stringify({ + name: sessions?.user?.name, + settings: { + CustomLists: !useCustomList, + }, + }), + }); + const data = await res.json(); + if (data) { + toast.success(`Custom List is now ${!useCustomList ? "on" : "off"}`); + } + localStorage.setItem("customList", !useCustomList); + } catch (error) { + console.error(error); + } + }; const filterMedia = (status) => { if (status === "all") { @@ -22,6 +58,8 @@ export default function MyList({ media, sessions, user, time }) { My Lists + +
@@ -51,28 +89,30 @@ export default function MyList({ media, sessions, user, time }) { Created At :
- {sessions && user.name === sessions?.user.name ? ( - - + {sessions && user.name === sessions?.user.name ? ( + - - - Edit Profile - - ) : null} + + + + Edit Profile + + ) : null} +
@@ -109,6 +149,27 @@ export default function MyList({ media, sessions, user, time }) {
)}
+ {sessions && user.name === sessions?.user.name && ( +
+

User Settings

+
+

+ Custom Lists +

+
+ +
+
+
+ )} {media.length !== 0 && (
@@ -183,7 +244,7 @@ export default function MyList({ media, sessions, user, time }) { )}
-
+
{media.length !== 0 ? ( filterMedia(listFilter).map((item, index) => { return ( @@ -381,6 +442,12 @@ export async function getServerSideProps(context) { }; } + let userData; + + if (session) { + userData = await getUser(session.user.name, false); + } + const prog = get.lists; function getIndex(status) { @@ -400,6 +467,7 @@ export async function getServerSideProps(context) { sessions: session, user: user, time: time, + userSettings: userData?.setting || null, }, }; } -- cgit v1.2.3